////////////////////////////////////////////////////////////////////////////////

#ifndef _SERVERSTATISTICSPACKET_H_
#define _SERVERSTATISTICSPACKET_H_

//////////////////////////////////////////////////////////////////////////

#ifndef _TIMEPACKET_H_
#include "timepacket.h"
#endif

#ifndef _PLAYERSINFO_H_
#include "playersinfo.h"
#endif

//////////////////////////////////////////////////////////////////////////


/** Network packet, that contains server statistics about players
*
*  @author   Anastasia Karpinska
*  @since    Jun 08th, 2010
*  @updated  Jun 08th, 2010
*/
class ServerStatisticsPacket : public TimePacket
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ServerStatisticsPacket( size_t _creationTime, const PlayersInfo& _info )
        : TimePacket(_creationTime),
          m_Info(_info) {}


////////////////////////////////////////////////////////////////////////////////


    /** Get server statistics*/
    const PlayersInfo& GetStatistics() const { return m_Info; }


////////////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////
//// Serializable interface implementation
//////////////////////////////////////////////////////////////////////////


    /** Accept saver, that serializes the object into buffer */
    virtual void AcceptSaver( Saver& _saver ) const { _saver.SaveServerStatisticsPacket(*this); }


//////////////////////////////////////////////////////////////////////////



    /** Server statistics */
    PlayersInfo m_Info;


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
